package cn.kgc.service.impl;

import cn.kgc.client.RestDmImageClient;
import cn.kgc.client.RestDmItemClient;
import cn.kgc.dto.Dto;
import cn.kgc.pojo.DmImage;
import cn.kgc.pojo.DmItem;
import cn.kgc.service.HomeService;
import cn.kgc.utils.Constants;
import cn.kgc.vo.HotItemVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Service
public class HomeServiceImpl implements HomeService {
    //
    @Autowired
    RestDmItemClient restDmItemClient;
    @Autowired
    RestDmImageClient restDmImageClient;
    //核心   业务流程
    //1.获取isBanner=1的商品，isBanner=1的商品是热推，热推有可能有N件，取前五件商品作为轮播----？dm_item--->dm_item
    //2.获取到热推的商品，获取热推的图片 ----》dm_item--id--->ID+TYPE+categoryID--》图片 --->   dm_base--->List<dm_image>---List<dm_image>.get(0)
    //3.如果没有图片----》默认图片展示。
    //4.封装vo返回
    @Override
    public List<HotItemVo> queryBanner() throws Exception {

        //1.获取isBanner=1的商品，isBanner=1的商品是热推，热推有可能有N件，取前五件商品作为轮播----？dm_item--->dm_item
        java.util.Map map= new HashMap<>();
        map.put("isBanner",1);
        map.put("beginPos",new Integer(0));
        map.put("pageSize",new Integer(5));

        List<HotItemVo> list=new ArrayList<>();
        List<DmItem> dmItemListByMap = restDmItemClient.getDmItemListByMap(map);

        if(dmItemListByMap==null){
            return null;
        }

        //获取到热推的商品，获取热推的图片 ----》dm_item--id--->ID+TYPE+categoryID--》图片
        for (DmItem dmItem : dmItemListByMap) {
            HotItemVo hotItemVo = new HotItemVo();
            //导数据，将pojo导入到vo中，前提必须属性名，类型一致
            BeanUtils.copyProperties(dmItem,hotItemVo);
            //两个对象属性名或者类型不一致，又需要赋值，这时候就通过getter setter方法赋值
            hotItemVo.setItemId(dmItem.getId());

            //获取商品的热推图片，banner图---》
            DmImage dmImage = restDmImageClient.getDmImage_DefaultImage(dmItem.getId(),Constants.Image.ImageType.carousel,
                    Constants.Image.ImageCategory.item).get(0);
            BeanUtils.copyProperties(dmImage,hotItemVo);
            list.add(hotItemVo);
        }

        return list;
    }

}
